package cn.tedu;

import java.sql.*;
import java.util.Scanner;

public class Demo07 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入用户名");
        String username = sc.nextLine();
        System.out.println("请输入密码");
        String password = sc.nextLine();
        //获取连接
        try (Connection conn = DBUtils.getConn()) {
            /*
            Statement s = conn.createStatement();
            String sql = "select count(*) from user where username='" + username + "' and password='" + password + "' ";
            ResultSet rs = s.executeQuery(sql);
            */
            //创建需要执行的SQL语句 用占位符? 表示变量
            String sql = "select count(*) from user where username=? abd password=?";
            //创建预编译的sql执行对象,在执行这行代码时将sql与剧中程序员所写的业务逻辑部分的sql
            //语句编译并锁死现有逻辑
            PreparedStatement ps = conn.prepareStatement(sql);
            //替换sql中的?内容  1和2 代表的是?的位置,
            //此时将用户植入的内容以值得形式替换到sql语句里面,不会更改现有的sql的判断,
            //从而避免了sql注入问题
            ps.setString(1,username);
            ps.setString(2,password);
            //执行sql语句
            ResultSet rs = ps.executeQuery();
            //让游标只想第一条数据
            rs.next();
            //从结果集对象中取出查询到数量
            int count = rs.getInt(1);
            if (count > 0) {
                System.out.println("登陆成功!");
            } else {
                System.out.println("用户或者密码错误~");
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }
}
